package cn.lx.weixin;

import cn.lx.req.WeixinQrCodeReq;
import cn.lx.res.WeixinQrCodeRes;
import cn.lx.res.WeixinTokenRes;
import cn.lx.vo.WeixinTemplateMessageVO;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Query;

/**
 * @ClassName IWeixinApiService
 * @Description: 微信服务对接
 * @Author: 落雪
 * @CreateDate: 2025/3/14 08:59
 * @UpdateUser: 落雪
 * @UpdateDate: 2025/3/14 08:59
 * @UpdateRemark:
 * @Version: 1.0
 */
public interface IWeixinApiService {

    /**
    * @Author: 落雪
    * @Date: 2025/3/14 09:02
    * @Description: 获取access_token
    * @param grantType 获取access_token填写client_credential
    * @param appId 第三方用户唯一凭证
    * @param appSecret 第三方用户唯一凭证密钥，即appsecret
    * @Return: retrofit2.Call<cn.lx.res.WeixinTokenRes>
    * @Version: 1.0.0
    */
    @GET("cgi-bin/token")
    Call<WeixinTokenRes> getToken(@Query("grant_type") String grantType,
                                  @Query("appid") String appId,
                                  @Query("secret") String appSecret);


    /**
     * 获取凭据 ticket
     * 文档：<a href="https://developers.weixin.qq.com/doc/offiaccount/Account_Management/Generating_a_Parametric_QR_Code.html">Generating_a_Parametric_QR_Code</a>
     * <a href="https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=TICKET">前端根据凭证展示二维码</a>
     *
     * @param accessToken            getToken 获取的 token 信息
     * @param weixinQrCodeReq 入参对象
     * @return 应答结果
     */
    @POST("cgi-bin/qrcode/create")
    Call<WeixinQrCodeRes> createQrCode(@Query("access_token") String accessToken, @Body WeixinQrCodeReq weixinQrCodeReq);


    /**
     * 发送微信公众号模板消息
     * 文档：https://mp.weixin.qq.com/debug/cgi-bin/readtmpl?t=tmplmsg/faq_tmpl
     *
     * @param accessToken              getToken 获取的 token 信息
     * @param weixinTemplateMessageVO 入参对象
     * @return 应答结果
     */
    @POST("cgi-bin/message/template/send")
    Call<Void> sendMessage(@Query("access_token") String accessToken, @Body WeixinTemplateMessageVO weixinTemplateMessageVO);


}
